//
//  main.c
//  sizeof运算符
//
//  Created by ws on 2017/7/13.
//  Copyright © 2017年 王松. All rights reserved.
//

#include <stdio.h>

/**
 sizeof运算符:用来计算变量,常量,以及数据类型(指的是这种数据类型的变量或常量)所占用的内存空间的字节数
 sizeof()是运算符不是函数,
 */
/**
 常量:当他用在常量上面可以省去小括号
 */
void test1(){
    //常量
    
    int size = sizeof(1);//1所占用的字节数
    printf("%d\n",size);//4 说明int占4个字节
    
    int size1 = sizeof (2.3);//2.3所占用的字节数
    printf("%d\n",size1);//8 说明double占8个字节
    
    int size2 = sizeof 2.3f;//2.3所占用的字节数
    printf("%d\n",size2);//4 说明float占4个字节
    
    int size3 = sizeof 'A';//A所占用的字节数
    printf("%d\n",size3);//4 占4个字节,因为对于常量来说A作为字面量也是一个整型,所以占四个字节 , 但是如果定义成char变量就是一个字节
}
/**
 变量:当sizeof作用在变量上面,有两种格式,1.sizeof(变量名称) 2.sizeof 变量名称
 */
void test2(){

    
    int a ;
    int size = sizeof(a);
    printf("%d\n",size);//4 占四字节
    
    float b;
    int size1 = sizeof(b);
    printf("%d\n",size1);//4 占四字节
    
    char c;
    int size2 = sizeof(c);
    printf("%d\n",size2);//1 占1字节
    
    double d;
    int size3 = sizeof(d);
    printf("%d\n",size3);//1 占八个字节

}
/**
 数据类型:
 1.sizeof()作用在数据类型,表示这个数据类型的常量或者变量所占用的存储空间
 2.类型本身是不占用存储空间的,只有类型的数据才会占用存储空间
 3.当sizeof作用在数据类型上那么小括号不可以省略的
 */
void test3(){
    //sizeof()作用在数据类型,表示这个数据类型的常量或者变量所占用的存储空间
    //类型本身是不占用存储空间的,只有类型的数据才会占用存储空间
    //当sizeof作用在数据类型上那么小括号不可以省略的
    int size = sizeof(int);//数据类型的变量所占用的控件(类型本身不占内存空间的 )
    printf("%d\n",size);//4个字节
    
    int size1 = sizeof(double);//数据类型的变量所占用的控件(类型本身不占内存空间的 )
    printf("%d\n",size1);//8个字节
    
    int size2 = sizeof(float);//数据类型的变量所占用的控件(类型本身不占内存空间的 )
    printf("%d\n",size2);//4个字节
    
    int size3 = sizeof(char);//数据类型的变量所占用的控件(类型本身不占内存空间的 )
    printf("%d\n",size3);//1个字节
}
int main(int argc, const char * argv[]) {
    char c = 'A';
    int size3 = sizeof c;//A所占用的字节数
     printf("%d\n",size3);
    return 0;
}
